package com.ethink.warehouse.api;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ethink.warehouse.api.info.MateInventoryOtherOutLogInfo;
import com.ethink.warehouse.api.info.MateInventoryOtherOutLogModeInfo;
import com.ethink.warehouse.api.request.MateInventoryOtherOutLogAddRequest;
import com.ethink.warehouse.api.request.MateInventoryOtherOutLogQueryRequest;
import com.ethink.warehouse.api.request.MateInventoryOtherOutLogUpdateRequest;
import com.ethink.warehouse.api.response.MateInventoryOtherOutLogAddResponse;
import com.ethink.warehouse.api.response.MateInventoryOtherOutLogDeleteResponse;
import com.ethink.warehouse.api.response.MateInventoryOtherOutLogDetailResponse;
import com.ethink.warehouse.api.response.MateInventoryOtherOutLogUpdateResponse;
import com.sun.org.apache.xpath.internal.operations.Bool;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 其他出库 Facade接口
 *
 * @author default
 * @date 2023-02-08
 */
@FeignClient(name = "ethink-warehouse-service", path = "warehouse-service/facade/v1/mateInventoryOtherOutLog", contextId = "mateInventoryOtherOutLogFacade")
public interface MateInventoryOtherOutLogFacade {

    @PostMapping("/queryMateInventoryOtherOutLog")
    @ResponseBody
    Page<MateInventoryOtherOutLogInfo> queryMateInventoryOtherOutLog(@RequestBody MateInventoryOtherOutLogQueryRequest request);

    @PostMapping("/getMateInventoryOtherOutLogById")
    @ResponseBody
    MateInventoryOtherOutLogDetailResponse getMateInventoryOtherOutLogById(@RequestParam("mateInventoryOtherOutLogId") Long mateInventoryOtherOutLogId);

    @PostMapping("/listMateInventoryOtherOutLog")
    @ResponseBody
    List<MateInventoryOtherOutLogInfo> listMateInventoryOtherOutLog(@RequestBody MateInventoryOtherOutLogQueryRequest request);

    @PostMapping("/addMateInventoryOtherOutLog")
    @ResponseBody
    MateInventoryOtherOutLogAddResponse addMateInventoryOtherOutLog(@RequestBody MateInventoryOtherOutLogAddRequest request);

    @PostMapping("/updateMateInventoryOtherOutLog")
    @ResponseBody
    MateInventoryOtherOutLogUpdateResponse updateMateInventoryOtherOutLog(@RequestBody MateInventoryOtherOutLogUpdateRequest request);

    @PostMapping("/deleteMateInventoryOtherOutLog")
    @ResponseBody
    Boolean deleteMateInventoryOtherOutLog(@RequestParam("mateInventoryOtherOutLogId") Long mateInventoryOtherOutLogId);

    @GetMapping("/mateInventoryOtherOutLogPass")
    @ResponseBody
    Boolean mateInventoryOtherOutLogPass(@RequestParam("mateInventoryOtherOutLogId") Long mateInventoryOtherOutLogId);

    @GetMapping("/mateInventoryOtherOutLogRefuse")
    @ResponseBody
    Boolean mateInventoryOtherOutLogRefuse(@RequestParam("mateInventoryOtherOutLogId") Long mateInventoryOtherOutLogId);

    @PostMapping("/queryMateInventoryOtherOutLogMode")
    @ResponseBody
    Page<MateInventoryOtherOutLogModeInfo> queryMateInventoryOtherOutLogMode(@RequestBody MateInventoryOtherOutLogQueryRequest request);

}